package mqtt

import (
	"time"
)

// SensorData 传感器数据结构（用于 MQTT 发布）
type SensorData struct {
	DeviceID   string    `json:"device_id"`
	SensorType string    `json:"sensor_type"`
	Value      float64   `json:"value"`
	Unit       string    `json:"unit"`
	Timestamp  time.Time `json:"timestamp"`
	Quality    int       `json:"quality"` // 0-100
	Metadata   map[string]interface{} `json:"metadata,omitempty"` // 额外元数据
}

// DeviceStatus 设备状态
type DeviceStatus struct {
	DeviceID  string    `json:"device_id"`
	Status    string    `json:"status"` // online/offline/fault
	Timestamp time.Time `json:"timestamp"`
	Metadata  map[string]interface{} `json:"metadata,omitempty"`
}

// Alert 告警数据
type Alert struct {
	DeviceID   string    `json:"device_id"`
	AlertType  string    `json:"alert_type"`
	Severity   string    `json:"severity"` // low/medium/high/critical
	Message    string    `json:"message"`
	Value      float64   `json:"value"`
	Threshold  float64   `json:"threshold"`
	Timestamp  time.Time `json:"timestamp"`
}

// TLSConfig TLS加密配置
type TLSConfig struct {
	Enabled            bool   `json:"enabled"`              // 是否启用TLS
	CAFile             string `json:"ca_file"`              // CA证书路径
	CertFile           string `json:"cert_file"`            // 客户端证书路径（可选）
	KeyFile            string `json:"key_file"`             // 客户端私钥路径（可选）
	InsecureSkipVerify bool   `json:"insecure_skip_verify"` // 是否跳过证书验证（仅测试环境）
}

// Config MQTT 配置
type Config struct {
	Broker   string     `json:"broker"`   // MQTT broker 地址，如 "tcp://172.18.2.214:1883" 或 "ssl://127.0.0.1:8883"
	ClientID string     `json:"client_id"` // 客户端 ID（通常使用 device_id）
	Username string     `json:"username"`  // MQTT 用户名（可选）
	Password string     `json:"password"`  // MQTT 密码（使用 JWT token）
	QoS      byte       `json:"qos"`       // 0, 1, 2
	Retained bool       `json:"retained"`  // 是否保留消息
	TLS      *TLSConfig `json:"tls"`       // TLS配置（可选）
}
